#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
  pid_t id = fork();
  if(id == 0)
  {
    //子进程
    int cnt = 5;
    while(cnt)
    {
      printf("我是子进程:%d,父进程:%d,cnt:%d\n",getpid(),getppid(),cnt--);
      sleep(1);
      //野指针问题
      int *p = NULL;
      *p = 100;
    }
    exit(12);
  }
  //父进程
  sleep(10);
  // pid_t ret = wait(NULL);
  int status = 0; //不是整体被使用，存在自己的位图结构
  pid_t ret = waitpid(id,&status,0);
  if(id>0)
  {
    printf("wait success:%d,sig number:%d,child exit code:%d\n",ret,(status & 0x7F),(status>>8)&0xFF);
    // printf("wait success,ret:%d\n",ret);
  }
  sleep(5);
}

/*
int main()
{
  int i=0;
  for(i=0;i<200;i++)
  {
    printf("%d:%s\n",i,strerror(i));
  }
  return 0;
}
*/
